昨天我們成功運作了我們第一個程式了
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
下面我簡單介紹一下這些程式碼分別是甚麼
app = Flask(__name__)
#初始化時傳入的 __name__ 參數,代表當前模組的名稱。
#是固定用法,這可以讓 Flask 知道在哪裡尋找資源。
@app.route("/")
#Flask會利用route()裝飾器來告訴Flask什麼URL應該觸發我們的函數。
def hello_world():
return "<p>Hello, World!</p>"
#該函數返回我們想要在用戶瀏覽器中顯示的消息。默認內容類型是 HTML,因此字符串中的 HTML 將由瀏覽器呈現,也一定是一個要執行的function,透過這樣子的設置,當你連接到’/'的時候,路由就知道要執行後面的function了。
在日後如果要執行也可以在程式碼的最後增加
if __name__ == '__main__':
app.run(debug=True)
# run是Flask內建的開發伺服器,在開發過程中可以通過run來快速啟動伺服器
# debug=True可以幫助我們在修改的時候可以快速地發現錯誤或自動重新加載
提到debug=True
,我們也可以在額外寫一個config檔案專門儲存這些資訊,這個在日後我們也會提到喔。
在Flask的run函數中除了debug還有很多參數是可以選擇的
參數 | 功能 |
---|---|
host | 伺服器要監聽的主機名,默認是127.0.0.1(localhost),如果設定為0.0.0.0則允許公網訪問 |
port | 伺服器運行的端口號,莫認為5000 |
debug | 啟用debug模式,當程式碼有修改時伺服器會自動重載莫認為false。 |
options | 直接傳遞給底層的WSGI伺服器 |
在Flask的route()是可以允許傳遞參數的,他支援的參數型別有下面這幾種
Type | Description |
---|---|
string | 能接受任何不帶斜線的文本,是默認的選項 |
int | 只能接受整數 |
float | 跟int類似,但可以接受浮點數 |
path | 跟string類似,但可以接受斜線 |
uuid | 接受uuid字符串 |
使用變數指定動態路由:
@app.route('/user/<username>')
def show_user_profile(username):
return f'User {username}\'s profile'
# 可以看到他將網址上的arbin做為參數傳到網頁上顯示出來
也可以根據傳入的值進行運算
@app.route('/add/<int:a>/<int:b>')
def add(a, b):
return f'{a} + {b} = {a+b}'
在 Flask 中我們可以透過 methods 參數指定 route 要支援的請求方法:
@app.route('/login', methods=['GET', 'POST'])
def login():
pass
這樣這個路由就可以處理 GET 和 POST 請求。
通常我們會根據 request.method 來區分請求方法:
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
# 處理 POST 請求,例如從表單接收資料
else:
# 處理 GET 請求,例如返回登入頁面
透過這些簡單的範例,我們可以了解一些 Flask 的簡單操作了。